﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using validarDatos;
using ot;
using consultasSql;
using email;
using consultasSql.consultasVarias;

public partial class Stdby_OrdenTrabajo_anulaOt : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }

    /*---------------------------------------------------------*/
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../tabOrdenTrabajo/anulaOt.aspx", false);
    }


    /*---------------------------------------------------------*/

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["idOt"] != null)
            {

                /*--------------*/
                //recargo la pagina para poder mostrar los botones que se activaron luego de guardar los datos, de acuerdo a los permisos
                string exito = Request.QueryString["exito"];

                if (!String.IsNullOrEmpty(exito))
                {
                    if (exito.Equals("0"))
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    }
                }
                /*--------------*/


                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    cargarCampos(Convert.ToInt32(Session["idOt"].ToString().Trim()));
                }
                else
                {
                    Response.Redirect("~/Stdby/OrdenTrabajo/tabOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }
        }
    }

    //cargo los campos desde la tabla otcab
    private void cargarCampos(int Id)
    {
        try
        {
            string consulta = "SELECT CorrespondeFC, MotivoAnula FROM OtCab WHERE Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            cbxFacturar.Checked = Convert.ToBoolean(tabla.Rows[0]["CorrespondeFC"]);

            txtObservaciones.Text = tabla.Rows[0][1].ToString();

        }
        catch { }

    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (comprobarCampos())
        {
            updateInsert();
        }
    }


    //comprobar campos
    private bool comprobarCampos()
    {
        lblObservaciones.Visible = false;

        txtObservaciones.ToolTip = null;

        bool bandera = true;

        try
        {
            if (!CValidaDatos.validaPalabras(txtObservaciones.Text.Trim()) || String.IsNullOrEmpty(txtObservaciones.Text.Trim()))
            {
                txtObservaciones.ToolTip = CMensajes.mensajeValidaPalabra();
                lblObservaciones.Visible = true;
                bandera = false;
            }

        }
        catch
        {
            bandera = false;
        }

        return bandera;
    }


    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CAnulaOt objeto = new CAnulaOt
            {
                CorrespondeFC = cbxFacturar.Checked,
                MotivoAnula = txtObservaciones.Text.Trim(),

            };

            CConsultaAnulaOt consulta = new CConsultaAnulaOt();


            if (Session["idOt"] != null)
            {
                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    objeto.Id = Convert.ToInt32(Session["idOt"].ToString().Trim());

                    if (consulta.update(objeto))
                    {
                        //si fue exitosa envio 0, para luego mostrar el mensaje
                        Response.Redirect("../tabOrdenTrabajo/anulaOt.aspx?exito=0", false);
                    }
                    else
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionFallida());
                    }
                }
                else //si es null, redirigimos, debido a que algo sucedio
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
                }
            }
            else //si es null, redirigimos, debido a que algo sucedio
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }


    private bool enviarMail()
    {
        bool bandera = false;

        CEmail email = new CEmail();

        email.dirMailEnviar = obtenerEmail();
        email.Asunto = "Envío automático de remitos.";
        email.Contenido = "El Remito N° " + obtenerNroRemito() + " ha sido anulado. Corresponde a la OT N° " + Session["idOt"].ToString().Trim() + "." + Environment.NewLine + Environment.NewLine + "No responda este e-mail.";


        if (email.enviarEmail())
        {
            mostrarMensaje("Se ha informado exitosamente de la operación realizada.");
        }
        else
        {
            mostrarMensaje("No se ha podido informar de la operación realizada.");
        }


        return bandera;
    }


    private string obtenerEmail()
    {
        string consulta = "SELECT RemitoCab.EmailImprime FROM RemitoCab INNER JOIN OtCab ON RemitoCab.Id = OtCab.IdRemCab WHERE OtCab.Id = @Id";

        return ejecutarConsulta(consulta);
    }

    private string obtenerNroRemito()
    {
        string consulta = "SELECT RemitoCab.NroRem FROM RemitoCab INNER JOIN OtCab ON RemitoCab.Id = OtCab.IdRemCab WHERE OtCab.Id = @Id";

        return ejecutarConsulta(consulta);
    }


    private string ejecutarConsulta(string consulta)
    {
        try
        {
            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Convert.ToInt32(Session["idOt"].ToString().Trim()));

            DataTable tabla = new CDarDataSet().darDataTable(command);

            return tabla.Rows[0][0].ToString().Trim();
        }
        catch { }

        return null;
    }

}